﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
//using BolaoDNA.DomainModel.Exceptions;

namespace BolaoDNA.DomainModel
{
    public class Palpite
    {
        public Palpite() {
            this.Jogo = new Jogo();
            this.InscricaoBolao = new InscricaoBolao();
        }
        public Palpite(int placarCasa, int placarVisitante)
        {
            if (placarCasa < 0 || placarCasa > 99)
            {
                //throw new PalpiteComPlacarInvalidoException("Placar do time da casa negativo ou superior a 100"); 
            }
            if (placarVisitante < 0 || placarVisitante > 99)
            {
                //throw new PalpiteComPlacarInvalidoException("Placar do time visitante negativo ou superior a 100"); 
            }

            this.PlacarCasa = placarCasa;
            this.PlacarVisitante = placarVisitante;
        }

        virtual public Int32 ID { get; set; }

        virtual public Jogo Jogo { get; set; }
        
        virtual public Int32? PlacarCasa { get; set; }

        virtual public Int32? PlacarVisitante { get; set; }

        public InscricaoBolao InscricaoBolao {get ; set;}

        public Int32 PontuacaoJogo { get; set; }

        public void CalcularPontuacao()
        {
            if (Jogo.Status == StatusJogo.Cancelado)
            {
                this.PontuacaoJogo = 200;
            }
            else if (Jogo.Status == StatusJogo.Finalizado)
            {

                if (Jogo.PlacarCasa == this.PlacarCasa && Jogo.PlacarVisitante == this.PlacarVisitante)
                {
                    this.PontuacaoJogo = 200;
                }
                else if ((Jogo.PlacarCasa > Jogo.PlacarVisitante && this.PlacarCasa > this.PlacarVisitante) || (Jogo.PlacarCasa == Jogo.PlacarVisitante && this.PlacarCasa == this.PlacarVisitante) || (Jogo.PlacarCasa < Jogo.PlacarVisitante && this.PlacarCasa < this.PlacarVisitante))
                {

                    if (Jogo.PlacarCasa == this.PlacarCasa || Jogo.PlacarVisitante == this.PlacarVisitante)
                    {
                        this.PontuacaoJogo = 150;
                    }
                    else
                    {
                        this.PontuacaoJogo = 100;
                    }
                }
                else
                {

                    this.PontuacaoJogo = 0;
                }
            }
            else
            {
                this.PontuacaoJogo = 0;
            }
        }
        
    }
}
